
        <html>
			<head>
			     <title>Bypass McAfee Application Control--Write&amp;Read Protection - 三好学生</title>
				 <meta http-equiv="content-type" content="text/html; charset=UTF-8">
			</head>
			<body>
				<h1>原文地址:<a href="http://drops.wooyun.org/tips/11305">http://drops.wooyun.org/tips/11305</a></h1>
				
      <p>
        <h1>0x00 前言</h1>

<hr />

<p>上篇我们成功在McAfee Application Control保护的系统上实现了代码执行，而McAfee Application Control的其他保护功能同样很强大，其中对文件读写操作的拦截很有特色，这一次我们接着试试能不能绕过：D</p>

<p><img src="http://static.wooyun.org//drops/20151223/20151223050507471391104.png" alt="这里写图片描述" /></p>

<!--more-->

<h1>0x01 简介</h1>

<hr />

<p>当McAfee Application Control开启了文件写入保护和读取保护，可以阻止任何对受保护文件的修改，具体保护细节如图</p>

<p><img src="http://static.wooyun.org//drops/20151223/2015122305050987612246.png" alt="这里写图片描述" /></p>

<p>简单的说，如果开启了写入保护，那么对文件的任何修改操作都会被阻止并被日志记录。</p>

<p>如果开启了读取保护，那么无法读取受保护文件的内容。</p>

<p>可是深入了解之后，有趣的事情发生了。</p>

<h1>0x02 配置Write Protection</h1>

<hr />

<p>操作系统：<code>win7x86</code></p>

<p>首先学习一下如何设置以及使用文件写入保护。</p>

<p>写入保护可以指定文件夹、文件或者是驱动文件</p>

<p>测试使用指定文件夹<code>c：\test\write</code></p>

<p>里面包含<code>test.txt</code></p>

<h3>1.指定保护路径</h3>

<pre><code>#!bash
sadmin write-protect -i c:\test\write
</code></pre>

<h3>2.查看保护路径</h3>

<pre><code>#!bash
sadmin write-protect -l
</code></pre>

<p>如图 <img src="http://static.wooyun.org//drops/20151223/2015122305051182682336.png" alt="这里写图片描述" /></p>

<p>随后我们尝试<code>在c：\test\write</code>下新建文件、删除文件、修改文件，均失败</p>

<p>如图 <img src="http://static.wooyun.org//drops/20151223/2015122305051351745434.png" alt="这里写图片描述" /></p>

<p><img src="http://static.wooyun.org//drops/20151223/2015122305051418627525.png" alt="这里写图片描述" /></p>

<h3>3.删除保护路径</h3>

<pre><code>#!bash
sadmin write-protect -r c:\test\write
</code></pre>

<h1>0x03 配置Read Protection</h1>

<hr />

<p>接着测试读取保护</p>

<p>测试使用指定文件夹<code>c：\test\read</code></p>

<p>下面包含<code>test.txt</code>，里面保存有加密信息</p>

<blockquote>
  <p>注：<br />
  写入保护默认开启，而读取保护默认关闭，所以先要开启读取保护功能</p>
</blockquote>

<h3>1.开启读取保护功能</h3>

<pre><code>#!bash
sadmin features enable deny-read
</code></pre>

<h3>2.指定读取保护路径：</h3>

<pre><code>#!bash
sadmin read-protect –i c:\test\read
</code></pre>

<h3>3.查看读取保护路径：</h3>

<pre><code>#!bash
sadmin read-protect -l
</code></pre>

<p>如图 <img src="http://static.wooyun.org//drops/20151223/2015122305051620672625.png" alt="这里写图片描述" /></p>

<p>尝试读取文件内容，失败，如图 <img src="http://static.wooyun.org//drops/20151223/2015122305051774956722.png" alt="这里写图片描述" /></p>

<h1>0x04 权限分配漏洞</h1>

<hr />

<p>通过以上的测试可以发现：</p>

<ul>
<li>写入保护阻止用户对文件进行写入操作</li>
<li>读取保护阻止用户对文件进行读取操作</li>
</ul>

<p>但是:</p>

<p>McAfee Application Control会默认设定白名单进程用来为系统进行更新</p>

<p>所以这些进程都具有操作文件的权限</p>

<p>如果你仔细阅读了上一篇文章并能加以思考</p>

<p>那么其中的漏洞也显而易见</p>

<p><strong>如果能够利用白名单进程执行文件读写操作，那么自然能够绕过防护</strong></p>

<h1>0x05 漏洞利用</h1>

<hr />

<p><strong>利用思路：</strong></p>

<ul>
<li>查找默认白名单进程</li>
<li>找到可利用进程</li>
<li>使用进程注入</li>
<li>操作文件</li>
</ul>

<h3>1.查看白名单进程列表</h3>

<p>执行</p>

<pre><code>#!bash
sadmin updaters list
</code></pre>

<p>如图 <img src="http://static.wooyun.org//drops/20151223/2015122305051923816821.png" alt="这里写图片描述" /></p>

<p><img src="http://static.wooyun.org//drops/20151223/2015122305052019850919.png" alt="这里写图片描述" /></p>

<p><img src="http://static.wooyun.org//drops/20151223/20151223050522517681018.png" alt="这里写图片描述" /></p>

<h3>2.找到可被利用进程</h3>

<p>以下是我找到的比较通用并能被利用的进程：</p>

<ul>
<li>GoogleUpdate.exe</li>
<li>scsrvc.exe</li>
<li>spoolsv.exe</li>
</ul>

<h3>3.进程注入</h3>

<p>选取<code>GoogleUpdate.exe</code></p>

<p>使用《Powershell tricks::Code Execution &amp; Process Injection》提到的Process Injection-Meterpreter.ps1</p>

<p>可以在powershell的环境下粘贴代码执行</p>

<p>向GoogleUpdate.exe进程注入meterpreter</p>

<p>如图 <img src="http://static.wooyun.org//drops/20151223/20151223050523364711122.png" alt="这里写图片描述" /></p>

<blockquote>
  <p>注：<br />
  注入系统权限的进程需要管理员权限</p>
</blockquote>

<p>如图 <img src="http://static.wooyun.org//drops/20151223/20151223050525800771216.png" alt="这里写图片描述" /></p>

<p>弹回meterpreter</p>

<p>发现没有直接注入到GoogleUpdate.exe</p>

<p>接着进程注入，如图 <img src="http://static.wooyun.org//drops/20151223/20151223050526452181314.png" alt="这里写图片描述" /></p>

<p>成功注入到GoogleUpdate.exe，理论上已经有了权限可以操作受保护的文件</p>

<p>我们接着测试，如图 <img src="http://static.wooyun.org//drops/20151223/20151223050528648131414.png" alt="这里写图片描述" /></p>

<p>成功修改文件和删除文件</p>

<p>接着测试读取文件，如图 <img src="http://static.wooyun.org//drops/20151223/20151223050529896201515.png" alt="这里写图片描述" /></p>

<p>成功读取被保护的内容</p>

<blockquote>
  <p>注： 通过进程注入获得的权限可以用来执行脚本</p>
</blockquote>

<h1>0x06 补充</h1>

<hr />

<h3>1.设置密码</h3>

<p>McAfee Application Control可对操作设置密码，增强其安全</p>

<p>设置密码：</p>

<pre><code>#!bash
sadmin passwd 
</code></pre>

<p>去掉密码：</p>

<pre><code>#!bash
sadmin passwd -d
</code></pre>

<p>密码文件保存在<code>C:\Program Files\McAfee\Solidcore\passwd</code></p>

<h3>2.获取密码文件</h3>

<p>正常情况下<code>C:\Program Files\McAfee\Solidcore\passwd</code>无法被读取、无法被复制，即使进程注入到白名单进程内也无法实现，如图</p>

<p><img src="http://static.wooyun.org//drops/20151223/20151223050531397491613.png" alt="这里写图片描述" /></p>

<p>但是我们依然有办法：D</p>

<p>这里可以借鉴导出域控ntds.dit文件的方法，使用<code>NinjaCopy.ps1</code></p>

<p>下载链接：<br />
<a href="https://github.com/3gstudent/NinjaCopy">https://github.com/3gstudent/NinjaCopy</a></p>

<p>指定路径为：</p>

<pre><code>#!bash
Invoke-NinjaCopy -Path "C:\Program Files\McAfee\Solidcore\passwd" -LocalDestination "C:\test\trust\passwd"
</code></pre>

<p>管理员权限运行<code>NinjaCopy.ps1</code>，成功复制passwd文件</p>

<p>如图 <img src="http://static.wooyun.org//drops/20151223/20151223050532367761713.png" alt="这里写图片描述" /></p>

<h3>3.解析密码文件</h3>

<p><img src="http://static.wooyun.org//drops/20151223/20151223050534260161810.png" alt="这里写图片描述" /> 上图为passwd的内容</p>

<p>查看资料得知此处使用的是sha-512加密（mcafee-application-control-product-guide/Page68）</p>

<p>如图 <img src="http://static.wooyun.org//drops/20151223/20151223050536931851910.png" alt="这里写图片描述" /></p>

<p>推断<code>cryptographic salt</code>为<code>88daf0b4-790e-4eae-a926-b08788fbd1cb</code></p>

<p>在<a href="http://www.convertstring.com/Hash/SHA512">http://www.convertstring.com/Hash/SHA512</a>验证推断</p>

<p>输入<code>cryptographic salt</code>和明文对比测试</p>

<p>如图 <img src="http://static.wooyun.org//drops/20151223/2015122305053736603206.png" alt="这里写图片描述" /></p>

<p>passwd中的内容和我们自己加密的密文相同，判断正确</p>

<h3>4.信任路径</h3>

<p>McAfee Application Control为方便使用，可以指定信任路径，在里面的所有操作均不会被拦截</p>

<p>如果McAfee Application Control未设置密码或者密码被获得，可以建立一个信任路径，里面的操作均不会被拦截</p>

<p>建立：</p>

<pre><code>#!bash
sadmin trusted -i c:\test\trusted
</code></pre>

<p>查看：</p>

<pre><code>#!bash
sadmin trusted -l
</code></pre>

<p>如图程序成功执行 <img src="http://static.wooyun.org//drops/20151223/20151223050539610902113.png" alt="这里写图片描述" /></p>

<h3>5.日志</h3>

<p>日志默认被保存在<code>C:\ProgramData\McAfee\Solidcore\Logs</code></p>

<p>通过进程注入获得的权限可以修改此文件</p>

<h3>6.防护建议</h3>

<ul>
<li>为McAfee Application Control设置强密码</li>
<li>禁用powershell</li>
<li>禁用hta、js</li>
<li>禁用信任路径</li>
<li>白名单+黑名单结合使用</li>
</ul>

<h1>0x07 小结</h1>

<hr />

<p>“未知攻 焉知防”，即使做到以上几点，我相信依然有绕过的方法：）</p>

<p>本文由三好学生原创并首发于乌云drops，转载请注明</p>      </p>
    
			</body>
		</html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          